Introduction

“Wie is de mol” (Who is the mole or WIDM from now on) is a Dutch/Belgian television concept that focuses on a group of people that have to complete assignments in an adventurous setting. Upon successfully completing an assignment money is earned for a general fund, the end winner of the series wins this fund.

However, one of the contestants secretly is the mole. He or she sabotages the assignments in order to keep the general fund at a minimum. The challenge for the other contestants is to carefully observe each other’s behavior during the assignments in order to unveil the mole. Every episode ends with a test exam in which the contestants have to answer 20 questions about the mole. The contestant that answers the most of these questions wrong has to leave the show.

This concept brings with it a lot of inter-candidate communication, both by actions in the assignments and in conversations between candidates. Of course, the elimination may also provide candidates with additional information. The mole wants to keep a certain level of trust from the contestants, causing him to genuinely try on occasion. Also, contestants sometimes try to raise suspicion on themselves by sabotaging an assignment on purpose.

This amount of deceit and reasoning about knowledge made the game fit for modeling as a logical multi-agent system.

Model

We refer in general to a participant in the game as an Agent. Reflecting this, we create an interface with this name, and add an abstract class AgentImplementation, which implements this interface. From here, agents can go two ways: either they are the Mole, or a non-mole player, which we call a Contestant.

The suspicions of Agents are modeled using a HashMap, mapping agents to doubles. We normalize the suspicions so they sum up to one in order to give a directly interpretable measure of suspicion (considering the number of other Agents still in the game). The Mole may have a different way of changing his cover suspicions, but we found that it is rather convenient to let him take on the same policy as the Contestants, for trying to let sabotaging Contestants stay in the game.

Game Flow

We model the progression of the game with Round objects, where each Round represents an episode in the television series. Following the series, we let a Round consist of several assignments, with conversations taking place after each assignment. These components of a Round are modeled with GameEvent-objects, subclassed into AssignmentEvent, ConversationEvent and EliminationEvent.

  • Assignment Events

    The AssignmentEvent randomly creates visibility relations between agents, modeling the series' tendency to put contestants into multiple groups. In our model, the agents are all passed the information on who can see them, and based on this they decide to make the assignment either fail or succeed. The intention of the agents is not decisive however: trying to succeed only gives a higher probability of the agent actually succeeding, trying to fail gives a higher probability to fail. The AssignmentEvents takes this into account when calculating the actual result of the actions of an agent. Based on the collective results of the agents' actions, the result either fails or succeeds. The agents are then given the information on the failure or success of the assignment, as well as the failure or success of the people they observed during the assignment.

  • Conversation Events

    The ConversationEvent generates a number of conversations among the agents, with no agent having the same conversation partner more than once and no agents talking to themselves. The conversations have the special role of giving agents second-order knowledge. Agents tell eachother truthfully whom they suspect, which is valuable information in case of an elimination. At the end of every Round, agents clear this knowledge, since their conversation partner may easily change her suspicions in the next round.

  • Elimination Events

    The EliminationEvent asks every agent to vote on the agent they think is the mole. One of the agents who is wrong will be randomly selected and is eliminated from the game. The other agents are informed of this, remove her from their suspicion list, and update their suspicions on other agents if necessary. If all agents are correct in their suspicion of who the mole is, the game ends.

You can browse the javadoc files from Here.